<?php

require_once 'JSON.php';

/**
 * Сериализует значение в JSON-строку.
 *
 * @param   mixed $value
 * @return  string
 */
function smarty_modifier_json($value, $encoding = null) {
    if (!is_null($encoding)) {
        smarty_modifier_json_utf8_transform($value, $encoding);
    }
    $json = new Services_JSON;
    return $json->encode($value);
}

/**
 * Вспомогательная функция плагина - преобразует строку из исходной указанной
 * кодировки в UTF8.
 *
 * @param   mixed $value
 * @param   string $encoding
 */
function smarty_modifier_json_utf8_transform(&$value, $encoding) {
    foreach ($value as $key => $val) {
        if (is_string($val)) {
            $value[$key] = mb_convert_encoding($val, 'utf8', $encoding);
        }
        elseif (is_array($val)) {
            smarty_modifier_json_utf8_transform($value[$key]);
        }
    }
}
